package com.zhj.agent.support;

import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.matcher.ElementMatcher;

/**
 * 方法拦截点位的接口
 */
public interface InstanceMethodsInterceptPoint {

    /**
     * 方法匹配器，每一个方法拦截器都会指定自己的匹配器，返回的类型 ElementMatcher<MethodDescription> 泛型为方法的描述器
     *
     * @return the methods matcher
     * @since 1.0.0
     */
    ElementMatcher<MethodDescription> getMethodsMatcher();

    /**
     * 方法拦截器
     *
     * @return the methods interceptor
     * @since 1.0.0
     */
    Class<?> getMethodsInterceptor();

    /**
     * 是否覆盖参数，暂未实现
     *
     * @return the boolean
     * @since 1.0.0
     */
    boolean isOverrideArgs();
}
